package com.xb.loan.fund.dao;


import com.xb.loan.fund.dao.bean.CashEncash;
import com.xb.loan.fund.dao.bean.CashEncashRec;
import com.xb.loan.util.mybatis.MyBatisRepository;

import java.util.List;
import java.util.Map;

@MyBatisRepository
public interface CashEncashDao {
	/**
	 * 根据提现编码删除提现记录
	 * @param encashId 提现编码
	 * @return 返回删除记录条数
	 */
	int deleteByPrimaryKey(String encashId);

	/**
	 * 根据对象插入提现记录
	 * @param record 提现对象
	 * @return 返回插入记录条数
	 */
	int insert(CashEncash record);

	/**
	 * 清空指定账期的对账状态（将对账状态置为未对账）
	 * @param accountPeriod
	 * @return
	 */
	int clearAccountStatus(String accountPeriod);
	
	/**
	 * 通过encashId修改提现记录
	 * @param map 可更新的字段：status、accountStatus、submitTime、processTime
	 * @return
	 * 2015年9月18日 by wenju.song
	 */
	int updateCashEncash(Map<String, Object> map);

	/**
	 * 
	 * 根据条件分页查询提现记录
	 * @param map 查询条件Map，
	 *     map里的参数有 
	 *         platId    接入平台编码 
	 *         userId    用户编码 
	 *         partnerId 渠道编码
	 *         encashType提现类型 
	 *         status    订单状态 
	 *         startTime 提现开始时间 
	 *         endTime   提现结束时间 
	 *         porderId  渠道订单编码 
	 *         pageNum   当前页数 
	 *         numPerPage每一页显示记录条数
	 * @return 返回提现记录集合
	 * 修改时间：
	 */
	List<CashEncash> queryCashEncash(Map<String, Object> map);

	/**
	 * 根据条件查询提现记录
	 * @param map 查询条件可包含的字段：accountPeriod、accountStatus、status
	 * @return
	 */
	List<CashEncash> queryAllCashEncash(Map<String, Object> map);
	
	/**
	 * 根据条件查询条件下总记录
	 * @param map 查询条件Map，map里的参数有 
     *         platId    接入平台编码 
     *         userId    用户编码 
     *         partnerId 渠道编码
     *         encashType提现类型 
     *         status    订单状态 
     *         startTime 提现开始时间 
     *         endTime   提现结束时间 
     *         porderId  渠道订单编码
	 * @return 返回总条数
	 */
	int queryCashEncashCount(Map<String, Object> map);

//	/**
//	 * 
//	 * 通过用户编码查询当天用户提现记录
//	 * @userId 用户编码
//	 * @return 返回当天用户的提现记录集合 2015年9月14日 by wuqinglong
//	 */
//	List<CashEncash> queryCashEncashByUserId(String userId);

	/**
	 * 根据渠道ID和渠道订单ID查询提现记录
	 * @param map
	 * @return
	 * 2015年10月8日 by wenju.song
	 */
	CashEncash queryCashEncashByPid(Map<String, Object> map);
	
	CashEncash queryCashEncashById(String encashId);
	
	/**
     * 查询所有符合条件的提现记录-带数据权限
     */
    public List<Map<String,Object>> queryCashEncashAccess(Map<String, Object> map);

    /**
     * 查询所有符合条件的提现记录数量-带数据权限
     */
    public int queryCashEncashCountAccess(Map<String, Object> map);

    /**
     * 按天、分渠道统计提现信息
     * @param params
     * @return
     */
    public List<Map<String,Object>> statEncashDay(Map<String, Object> params);

    /**
     * 根据账户编码查询是否有未完成的提现记录
     * @param accountId     账户编码
     * @return
     */
    public int queryCashEncashByAccountId(String accountId);

	public List<CashEncashRec> queryCashEncashRec(Map<String, Object> map);

	public int queryCashEncashRecCount(Map<String, Object> map);
}